home *** CD-ROM | disk | FTP | other *** search
Wrap
10 REM ********************** 20 REM * SCREEN EDIT 80 * 30 REM * BY RUDY A. GUY * 40 REM * COPYRIGHT (C) 1984 * 50 REM * BY MICROSPARC, INC * 60 REM * LINCOLN, MA. 01773 * 70 REM ********************** 80 ONERR GOTO 1670 90 IF PEEK(64435) < >6 THEN 1840: REM MAKE SURE A //E IS BEING USED." 100 HIMEM: 36095 110 DIM VL(23),M$(21) 120 PRINT CHR$(4)"PR#3": REM ACTIVATE 80 COLUMN CARD. 130 TEXT : HOME : FOR I = 0 TO 23: READ VL(I): NEXT 140 TEXT : PRINT CHR$(12) 150 GOSUB 1130 160 REM MAIN INPUT ROUTINE 170 GET A$: IF ASC(A$) = 47 THEN GOSUB 1090: GOTO 170 180 PRINT A$; 190 IF ASC(A$) = 3 THEN GOSUB 310 200 IF ASC(A$) = 4 THEN GOSUB 520 210 IF ASC(A$) = 5 THEN PRINT CHR$(12) CHR$(21): END 220 IF ASC(A$) = 6 THEN GOSUB 980 230 IF ASC(A$) = 9 THEN GOSUB 650 240 IF ASC(A$) = 16 THEN GOSUB 460 250 IF ASC(A$) = 18 THEN GOSUB 400 260 IF ASC(A$) = 19 THEN GOSUB 850 270 IF ASC(A$) = 47 THEN GOSUB 1090 280 IF ASC(A$) = 127 THEN GOSUB 750 290 IF PEEK(37) >21 THEN VTAB 1 300 GOTO 170 310 REM CENTER JUSTIFY (CTRL-C) 320 V = PEEK(37):M$ = "": REM NO SPACE BETWEEN QUOTES 330 GOSUB 830 340 FOR I = 80 TO 1 STEP -1: IF MID$ (M$,I,1) < > CHR$(160) AND MID$ (M$,I,1) < > CHR$(32) THEN 360 350 NEXT : RETURN 360 M$ = LEFT$(M$,I) 370 PRINT CHR$(26): VTAB V +1 380 HT = 40 - LEN(M$)/2: POKE 1403,HT: PRINT M$ 390 RETURN 400 REM RIGHT JUSTIFY (CTRL-R) 410 V = PEEK(37):M$ = "": GOSUB 830: REM NO SPACE BETWEEN QUOTES. 420 FOR I = 80 TO 1 STEP -1: IF MID$ (M$,I,1) < > CHR$(160) AND MID$ (M$,I,1) < > CHR$(32) THEN 440 430 NEXT : RETURN : REM LINE ALREADY RIGHT JUSTIFIED. 440 M$ = LEFT$(M$,I): PRINT CHR$(26): VTAB V +1 450 HT = 80 - LEN(M$): POKE 1403,HT: PRINT M$;: RETURN 460 REM LEFT JUSTIFY (CTRL-P) 470 V = PEEK(37):M$ = "": GOSUB 830: REM NO SPACE BETWEEN QUOTES. 480 FOR I = 1 TO 80: IF MID$ (M$,I,1) < > CHR$(160) AND MID$ (M$,I,1) < > CHR$(32) THEN 500 490 NEXT : RETURN : REM LINE ALREADY LEFT JUSTIFIED. 500 M$ = RIGHT$(M$,80 -(I -1)): PRINT CHR$(26): VTAB V +1 510 PRINT M$: RETURN 520 REM DUMP TO PRINTER (CTRL-D) 530 POKE 34,22: HOME 540 GOSUB 1500 550 REM MEMORY HAS BEEN MOVED. SCREEN IS READ INTO M$ AND ORIENTED. 560 PRINT "Printing will begin in approximately 20 seconds." 570 FOR V = 0 TO 21:M$ = "": GOSUB 830:M$(V) = M$: NEXT : REM NO SPACE BETWEEN QUOTES. 580 PRINT CHR$(12); CHR$(21): PRINT CHR$(4)"PR#1": PRINT CHR$(9)"80N" 590 FOR I = 0 TO 21: PRINT M$(I);: NEXT : PRINT 600 PRINT CHR$(4)"PR#0" 610 PRINT CHR$(4)"PR#3": PRINT : REM REACTIVATE 80 COLUMN CARD. THE PRINT IS REQUIRED. 620 GOSUB 1620 630 VTAB 1 640 RETURN 650 REM INSERT (CTRL-I) 660 M$ = "": REM NO SPACE BETWEEN QUOTES. 670 HT = PEEK(1403):V = PEEK(37): GOSUB 830 680 IF HT = 79 THEN RETURN 690 IF HT = 0 THEN M1$ = "": GOTO 710: REM NO SPACE BETWEEN QUOTES. 700 M1$ = LEFT$(M$,HT) 710 IF RIGHT$(M$,1) < > CHR$(160) AND RIGHT$(M$,1) < > CHR$(32) THEN RETURN 720 M2$ = CHR$(160) + MID$ (M$,HT +1,(79 -HT)) 730 PRINT CHR$(26): VTAB V +1: PRINT M1$;M2$;: VTAB V +1: HTAB HT +1 740 RETURN 750 REM DELETE (DELETE KEY) 760 M$ = "":HT = PEEK(1403):V = PEEK(37): GOSUB 830 770 IF HT = 0 THEN VTAB V: POKE 1403,79: PRINT " ";: VTAB V: POKE 1403,79: RETURN 780 IF HT = 1 THEN M1$ = "":M2$ = RIGHT$(M$,79): GOTO 810: REM NO SPACE BETWEEN QUOTES. 790 M1$ = LEFT$(M$,HT -1) 800 M2$ = MID$ (M$,HT +1,(79 -HT)) 810 PRINT CHR$(26): VTAB V +1: PRINT M1$;M2$;: VTAB V +1: POKE 1403,HT -1 820 RETURN 830 REM READ 80 COLUMN SCREEN INTO M$ 840 FOR I = VL(V) TO VL(V) +39: POKE -16299,0:M$ = M$ + CHR$( PEEK(I)): POKE -16300,0:M$ = M$ + CHR$( PEEK(I)): NEXT : RETURN 850 REM SAVE 80 COLUMN SCREEN 860 V = PEEK(37):H = PEEK(1403) 870 PRINT CHR$(14) 880 POKE 34,22: HOME : INPUT "Screen name:";NA$: IF NA$ = "" THEN HOME : POKE 34,0: VTAB V +1: POKE 1403,H: RETURN 890 HOME 900 PRINT CHR$(4)"RENAME "NA$".M,"NA$".M": INPUT "THAT FILE ALREADY EXISTS. DO YOU WANT IT REPLACED?";YN$: IF LEFT$(YN$,1) = "N" THEN POKE 34,0: VTAB V +1: POKE 1403,H: RETURN 910 HOME 920 PRINT CHR$(4)"BSAVE "NA$".M,A$400,L$3FF" 930 POKE -16299,0 940 PRINT CHR$(4)"BSAVE "NA$".A,A$400,L$3FF" 950 POKE -16300,0 960 POKE 34,0 970 RETURN 980 REM LOAD 80 COLUMN SCREEN 990 HOME 1000 VTAB 23: PRINT "Screen name to load:": PRINT "DIR for directory";: VTAB 23: HTAB 21: INPUT "";NA$ 1010 IF NA$ = "" THEN HOME : RETURN 1020 IF NA$ = "DIR" OR NA$ = "dir" THEN HOME : PRINT CHR$(4)"CATALOG": GOTO 1000 1030 HOME : POKE -16300,0 1040 PRINT CHR$(4)"BLOAD "NA$".M" 1050 POKE -16299,0 1060 PRINT CHR$(4)"BLOAD "NA$".A" 1070 POKE -16300,0 1080 RETURN 1090 REM HELP (CTRL-/) 1100 FL = 1:V = PEEK(37) 1110 GOSUB 1500 1120 HOME 1130 REM : HEADER PAGE AND DIRECTIONS 1140 PRINT : VTAB 1 1150 A$ = "SCREEN EDIT - 80": GOSUB 1660:A$ = "By Rudy A. Guy": GOSUB 1660 1160 A$ = "Copyright (c) 1984 MicroSPARC, Inc.": GOSUB 1660 1170 PRINT "Control-C - Center Justify line at cursor" 1180 PRINT "Control-D - Dump page to printer" 1190 PRINT "Control-E - Exit program" 1200 PRINT "Control-F - Load a file from disk" 1210 PRINT "Control-H - Move cursor one space to the left" 1220 PRINT "Control-I - Insert character at cursor" 1230 PRINT "Control-J - Move cursor down to next line" 1240 PRINT "Control-K - Clears from cursor to end of screen" 1250 PRINT "Control-L - Clears screen and homes cursor" 1260 PRINT "Control-M - Moves cursor to left end of next line" 1270 PRINT "Control-N - Display set to NORMAL" 1280 PRINT "Control-O - Display set to INVERSE" 1290 PRINT "Control-P - Left justify line at cursor" 1300 PRINT "Control-R - Right justify line at cursor" 1310 PRINT "Control-S - Save screen to disk" 1320 PRINT "Control-V - Scrolls screen down one line" 1330 PRINT "Control-W - Scrolls screen up one line" 1340 PRINT "Control-Y - Home cursor (Screen is not cleared)" 1350 PRINT "Control-Z - Clears line at cursor" 1360 PRINT "Control-] - Clears line from cursor to end of line" 1370 PRINT "DELETE - Deletes character at cursor"; 1380 POKE 32,58: POKE 33,22: POKE 34,3: HOME 1390 PRINT "ESC functions:" 1400 PRINT : PRINT "I - Cursor up" 1410 PRINT "J - Cursor left" 1420 PRINT "K - Cursor right" 1430 PRINT "M - Cursor down" 1440 PRINT : PRINT "Arrow keys move cursorthe direction on the key while in the ESC mode." 1450 PRINT : INVERSE : PRINT "CTRL-/ for Help": NORMAL : PRINT 1460 PRINT : PRINT "DO NOT USE THE": PRINT "ESC - 4 OR ESC - 8": PRINT "SEQUENCE.": PRINT 1470 IF FL THEN FL = 0: GOTO 1490 1480 PRINT : PRINT "Press a key to begin.";: GET A$: PRINT A$: TEXT : HOME : RETURN 1490 PRINT "Press a key to resume.";: GET A$: PRINT A$: TEXT : HOME : GOSUB 1620: VTAB V +1: RETURN 1500 REM MEMORY MOVE ROUTINE 1510 REM LOC. 60 & 61 - BEGINNING OF MEMORY TO MOVE. 1520 REM LOC. 62 & 63 - END OF MEMORY BEING MOVED. 1530 REM LOC. 66 & 67 - DESTINATION OF MEMORY MOVE. 1540 REM LOC. 58 & 59 - SET JUMP TO MEMORY MOVE IN MONITOR. 1550 REM LOC. 71 - STORES 0 IN Y REGISTER. 1560 REM CALL -327 - STORES REGISTERS AND DOES JUMP TO MEMORY MOVE AT $FE2C 1570 REM MOVE SCREEN TO $8D00. 1580 POKE 60,0: POKE 61,4: POKE 62,255: POKE 63,7: POKE 66,0: POKE 67,141: POKE 58,44: POKE 59,254: POKE 71,0: CALL -327 1590 POKE -16299,0: POKE 60,0: POKE 61,4: POKE 62,255: POKE 63,7: POKE 66,0: POKE 67,145: POKE 58,44: POKE 59,254: POKE 71,0: CALL -327 1600 POKE -16300,0 1610 RETURN 1620 REM MOVE TEXT PAGES BACK TO NORMAL SCREEN MEMORY LOCATION. $8D00 TO $400. 1630 POKE 60,0: POKE 61,141: POKE 62,255: POKE 63,144: POKE 66,0: POKE 67,4: POKE 58,44: POKE 59,254: POKE 71,0: CALL -327: POKE -16299,0 1640 POKE 60,0: POKE 61,145: POKE 62,255: POKE 63,148: POKE 66,0: POKE 67,4: POKE 58,44: POKE 59,254: POKE 71,0: CALL -327: POKE -16300,0 1650 RETURN 1660 HT = 40 - LEN(A$)/2: POKE 1403,HT: PRINT A$: RETURN 1670 REM ERROR ROUTINE 1680 ER = PEEK(222): REM TYPE OF ERROR 1690 EL = PEEK(218) + PEEK(219) *256: REM ERROR LINE 1700 VTAB 23 1710 IF ER = 6 AND EL = 900 THEN 920 1720 IF ER = 22 THEN 170 1730 IF ER = 4 THEN PRINT "DISK IS WRITE PROTECTED.": GOTO 1810 1740 IF ER = 6 THEN PRINT "FILE NOT FOUND": GOTO 1810 1750 IF ER = 8 THEN PRINT "DISK I/O ERROR": GOTO 1810 1760 IF ER = 9 THEN PRINT "DISK IS FULL": GOTO 1810 1770 IF ER = 10 THEN PRINT "FILE LOCKED": GOTO 1810 1780 IF ER = 11 THEN PRINT "DISK SYNTAX ERROR": GOTO 1810 1790 IF ER = 15 THEN PRINT "FILE TYPE ERROR": GOTO 1810 1800 PRINT "Error #"ER" has occurred in line "EL: END 1810 FOR I = 1 TO 3000: NEXT : HOME : POKE 34,0: VTAB 1: HTAB 1: GOTO 170 1820 REM SCREEN MEMORY LOCATIONS FOR READING DIRECTLY FROM THE SCREEN. 1830 DATA 1024,1152,1280,1408,1536,1664,1792,1920,1064,1192,1320,1448,1576,1704,1832,1960,1104,1232,1360,1488,1616,1744,1872,2000 1840 TEXT : HOME : VTAB 12: PRINT "SORRY, THIS PROGRAM WILL ONLY WORK ON AN APPLE ][E."